package com.dpwgc.provider.mapper;

import com.dpwgc.provider.model.Dn;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface DnMapper {

    /**
     * 创建代拿订单
     * @param dn 订单信息
     * @return int
     */
    int createDn(Dn dn);

    /**
     * 根据uuid删除代拿订单
     * @param dnUuid
     * @return
     */
    int deleDn(String dnUuid);

    /**
     * 根据status与type返回代拿订单列表
     * @param dnStatus
     * @return
     */
    List<Dn> listDn(@Param("dnStatus") int dnStatus,
                    @Param("dnType") int dnType,
                    @Param("startPage") Integer startPage,
                    @Param("endPage") Integer endPage);

    /**
     * 返回全部代拿订单
     * @param
     * @return
     */
    List<Dn> listAllDn(@Param("startPage") Integer startPage,
                       @Param("endPage") Integer endPage);

    /**
     * 返回个人发起的订单
     * @param
     * @return
     */
    List<Dn> listUserDn(@Param("userUuid") String userUuid,
                        @Param("startPage") Integer startPage,
                        @Param("endPage") Integer endPage);

    /**
     * 返回猎人个人代拿订单
     * @param
     * @return
     */
    List<Dn> listHunterDn(@Param("hunterUuid") String hunterUuid,
                          @Param("startPage") Integer startPage,
                          @Param("endPage") Integer endPage);

    /**
     * 返回对应type代拿订单
     * @param
     * @return
     */
    List<Dn> listDnByType(@Param("type") int type,
                          @Param("startPage") Integer startPage,
                          @Param("endPage") Integer endPage);

    /**
     * 返回对应status代拿订单
     * @param
     * @return
     */
    List<Dn> listDnByStatus(@Param("status") int status,
                         @Param("startPage") Integer startPage,
                         @Param("endPage") Integer endPage);

    /**
     * 猎人接受代拿订单
     * @param dnUuid 订单uuid
     * @param hunterUuid 猎人uuid
     * @return Integer
     */
    Integer acceptDn(String dnUuid, String hunterUuid);

    /**
     * 代拿订单完成
     * @param dnUuid 订单uuid
     * @return Integer
     */
    Integer finishDn(String dnUuid);

    /**
     * 获取订单详细信息
     * @param dnUuid
     * @return
     */
    Dn getDn(String dnUuid);
}
